// 第一步，导入必要的模块
const fs = require('fs');
const path = require('path');
const archiver = require('archiver');

// 判断是否存在压缩包
function findFile(directory, filename, callback) {
  fs.readdir(directory, (err, files) => {
    if (err) {
      return callback(err);
    }
    let filePath;
    files.forEach((name) => {
      if (name === filename) {
        filePath = path.join(directory, name);
      }
    });
    callback(null, filePath);
  });
}
// 使用方法
findFile('./', 'exchangeAdmin.zip', (err, filePath) => {
  if (err) {
    console.error('Error finding file:', err);
    return;
  }
  if (filePath) {
    // 找到文件执行删除
    fs.unlink(filePath, (err) => {
      if (err) {
        console.error('删除文件出错', err);
      } else {
        console.log('文件删除成功:继续执行打包操作');
        goZip(true);
      }
    });
  } else {
    // 未找到文件
    console.log('未找到打包文件:继续执行打包操作');
    goZip(true);
  }
});
// 打包操作
function goZip(zipBool) {
  if (zipBool) {
    // 第二步，创建可写流来写入数据
    const output = fs.createWriteStream(__dirname + "/exchangeAdmin.zip");// 将压缩包保存到当前项目的目录下，并且压缩包名为test.zip
    const archive = archiver('zip', { zlib: { level: 9 } });// 设置压缩等级
  
    // 第三步，建立管道连接
    archive.pipe(output);
  
    // 第四步，压缩文件和目录到压缩包中
    archive.directory('dist/', 'exchangeAdmin');
  
    // 第五步，完成压缩
    archive.finalize();
  }
}